﻿namespace MWS.Processing.Interfaces
{
    public interface IProcessor : IRunnable
    {
        /// <summary>
        ///   The max number of requests to be stored in the queue.
        /// </summary>
        int RequestQueueSize { get; set; }

        /// <summary>
        ///   The rate (in milliseconds) that the request loop will sleep between checking if new requests
        ///   are needed to fill the queue.
        /// </summary>
        int GetRequestsRate { get; set; }

        /// <summary>
        ///   The rate (in milliseconds) that the process loop will sleep between checkig if the queue
        ///   has requests waiting to be processed.
        /// </summary>
        int ProcessRequestsRate { get; set; }

        /// <summary>
        ///   The max number of requests that will be taken from the queue each time the processing loop
        ///   iterates and finds requests to process in the queue.
        /// </summary>
        int ProcessRequestsMaxParallel { get; set; }
    }
}